/**
 * 属性模块服务文件
 */

const db = require('../db/attrs');

/**
 * 添加
 * @param {*} ctx 
 */
const add = async ctx => {
    try {
        const { body } = ctx.request;
        const { name, class_id } = body;
        const result = await db.exists(name, class_id);
        if (result) {
            return ctx.body = {
                code: 0,
                msg: '已存在相同的属性名称'
            }
        }
        await db.add(body);
        ctx.body = {
            code: 1,
            msg: '属性添加成功'
        }
    } catch (error) {
        ctx.app.emit('error', error);
        ctx.body = {
            code: 0,
            msg: '属性添加失败'
        }
    }
}

/**
 * 修改
 * @param {*} ctx 
 */
const update = async ctx => {
    try {
        const { body } = ctx.request;
        const { name, id, class_id } = body;
        if (await db.exists(name, class_id, id)) {
            return ctx.body = {
                code: 0,
                msg: '已存在相同的属性名称'
            }
        }
        await db.update(body);
        ctx.body = {
            code: 1,
            msg: '属性修改成功'
        }
    } catch (error) {
        ctx.app.emit('error', error);
        ctx.body = {
            code: 0,
            msg: '属性修改失败'
        }
    }
}

/**
 * 删除
 * @param {*} ctx 
 */
const del = async ctx => {
    try {
        const { id } = ctx.request.params;
        await db.del(id);
        ctx.body = {
            code: 1,
            msg: '属性删除成功'
        }
    } catch (error) {
        ctx.app.emit('error', error);
        ctx.body = {
            code: 0,
            msg: '属性删除失败'
        }
    }
}

/**
 * 获取
 * @param {*} ctx 
 */
const getList = async ctx => {
    try {
        const { class_id } = ctx.request.params;
        const data = await db.getListByClassId(class_id);
        ctx.body = {
            code: 1,
            data
        }
    } catch (error) {
        ctx.app.emit('error', error);
        ctx.body = {
            code: 0,
            msg: '属性获取失败'
        }
    }
}

module.exports = {
    add,
    del,
    update,
    getList,
}